Интерполяция и аппроксимация

Теоретическая часть

Интерполяция – один из способов аппроксимации данных. В простейшем (одномерном) случае задача интерполяции [1-3] состоит в следующем: заданы точки (xiyi), и требуется найти функцию fi.gif (868 bytes)(x), которая проходит через эти точки (см. рис. 1),

pic1.gif (18580 bytes)

т.е.

fi.gif (868 bytes)(xi)= yi , .                (1)                  

Точки (xiyi) называют узлами интерполяции, а функцию fi.gif (868 bytes)(x) – интерполирующей функцией или интерполянтом. Вид функции fi.gif (868 bytes)(x) определяет способ интерполяции. На практике в качестве интерполирующей функции fi.gif (868 bytes)(x) часто используются алгебраические полиномы различного вида, так как полиномы легко вычислять, дифференцировать и интегрировать. При этом интерполяция носит название полиномиальной.

Рассмотрим задачу линейной интерполяции. При этом интерполирующая функция имеет следующий вид:

,      (2)

где fi.gif (868 bytes)0(x), fi.gif (868 bytes)1(x), … , fi.gif (868 bytes)m(x) – базисные функции.

Используя условие (1) и выражение (2), получаем систему уравнений

        (3)

Единственное решение системы (3) существует при двух условиях:

1.       число точек (xiyi), равно числу коэффициентов Сk;

2.       система уравнений (3) должна быть невырожденной, т.е. определитель системы d.gif (908 bytes).

Таким образом, если выполняются вышеуказанные условия, то через точки (xiyi) проходит единственная функция .

В случае линейной полиномиальной интерполяции базисные функции имеют следующий вид:
fi.gif (868 bytes)0(x)= x0=1,  fi.gif (868 bytes)1(x)= x1=x,   fi.gif (868 bytes)2(x)= x2, … , fi.gif (868 bytes)m(x)= xm.
Интерполирующая функция при этом имеет вид полинома степени m:
fi.gif (868 bytes)(x)= Pm(x)=C0 + C1 x + C2 x 2 + … +Cm x m и, следовательно, система (3) примет вид

         (4)

В матричной форме систему (4) можно переписать как А*C=B, где

– матрица Ван дер Монда; ; .

Решением системы (4) будет вектор коэффициентов полинома С. Так как определитель матрицы Ван дер Монда всегда отличен от нуля (при xine.gif (843 bytes) xj), то решение системы (4) – единственное. Для решения системы (4) необходимо найти обратную матрицу A. В этом случае решением (4) будет C=A–1*B.

 

Вывод: Таким образом, через заданные на интервале [ab] точки (xiyi), всегда можно провести единственный интерполяционный полином fi.gif (868 bytes)(x)=Pn(x)=C0 + Cx + + Cx2 + … +Cn x n, коэффициенты которого находятся в результате решения системы (4).

Выражение (1) определяет поведение функции fi.gif (868 bytes)(x) только в узлах интерполяции (xiyi), . Между узлами fi.gif (868 bytes)(x) может вести себя произвольным образом, сколь угодно далеко, в принципе, отклоняясь от зависимости f(x). Определить погрешность приближения можно, используя выражение для абсолютной ошибки e.gif (847 bytes)=| f(x) – fi.gif (868 bytes)(x) |.

 

Ошибка полиномиальной интерполяции. Лучший способ проверить качество интерполяции – вычислить значения интерполирующей функции в большом числе точек и построить график. Однако в некоторых ситуациях качество интерполянта можно проанализировать. Предположим, что величина yi представляет собой точные значения известной функции f(x) в точках xi. Пусть Pn(x) – единственный полином n-й степени, интерполирующий функцию по этим точкам (xiyi), . Предположим, что во всех точках хpr.gif (844 bytes)[ab] функция f(x) имеет (n+1) непрерывную производную. Тогда можно показать [1, 2], что абсолютная ошибка интерполяции e.gif (847 bytes)(x)=| f(x)– Pn(x) | определяется выражением

,          (5)

где - максимальное значение (n+1)-й производной функции f(x) на интервале [ab]; .

Теперь посмотрим, что получится, если интерполировать известную функцию f(x) все в большем и большем числе точек на фиксированном интервале. Выражение для погрешности (5) состоит из трех разных частей; факториал и произведение разностей с увеличением n уменьшают ошибку, но порядок производной при этом растет. Для многих функций величина Mn+1 увеличиваются быстрее, чем (n+1)!. В результате полиномиальные интерполянты редко сходятся к обычной непрерывной функции. Практический эффект выражается в том, что интерполирующий полином высокой степени может вести себя "плохо" в точках, отличных от узлов интерполяции (xiyi), . Поэтому на практике часто используют интерполянты степени не выше 5-6.

Рисунок 2 – интерполяция функции Рунге полиномом степени n

Примером может служить функция Рунге [4] вида R(x)=1/(1+25x2), график которой представлен на рис. 2. С увеличением порядка интерполирующего полинома при равномерном распределении узлов интерполяции на интервале [–1, 1] происходит ухудшение качества приближения на краях интервала. Это объясняется тем, что производные R(x), которые фигурируют в выражении для погрешности интерполяции (5), быстро растут с увеличением числа n.

 

Точность приближения зависит не только от числа узлов интерполяции (т.е. порядка интерполирующего полинома), но и от их расположения на интервале [ab]. В простейшем случае выбирается равномерное расположение точек (xiyi), на интервале [ab] с шагом d1.gif (857 bytes)x=(ba)/(n–1). Однако, как показывает практика, равномерное расположение не является оптимальным с точки зрения лучшего приближения j (x) к зависимости f(x). Более оптимальным для полиномиальной интерполяции является расположение узлов на интервале [ab] по формуле Чебышева

, .          (6)

Выражение (6) определяет так называемое оптимальное распределение узлов интерполяции на интервале [ab].

1. Функция задана аналитически:

Постройте график функции. Осуществите интерполяцию функции. Постройте график интерполянты и погрешности интерполяции.

Выполните интерполяцию функции s(t) кубическим сплайном. Постройте графики базисных функций, кубического сплайна и погрешности интерполяции.

Выполните аппроксимацию функции. Постройте графики аппроксимирующей функции и погрешности аппроксимации.

2. Исследовать точность приближения с помощью полинома Pn(x) следующих трех функций (см. Приложение А):

а) функции 1 из таблицы заданий на лабораторную работу;

б) полинома Pm(x) из таблицы (выполнить расчет для случаев n<m, n=m, n>m, где n - порядок интерполирующего полинома);

в) функции 2 из таблицы заданий.

По результатам испытаний для каждой исходной функции заполнить таблицу (приведена ниже) или построить график зависимости максимальной ошибки e.gif (847 bytes)max от порядка интерполирующего полинома n (или числа узлов).

 

Порядок полинома Pn(x)

Максимальная ошибка e.gif (847 bytes)max

Равномерное распределение узлов

Оптимальное распределение узлов

4

  

  

 

Кроме этого, для полинома Pm(x) заполнить таблицу следующего вида (приведена ниже), т.е. привести значения коэффициентов интерполирующих полиномов P1(x) и P2(x), и сравнить коэффициенты исходного Pm(x) и интерполирующего Pn(x) полиномов для случаев n<m, n=m, n>m).

 

Порядок полинома Pn(x)

Равномерное распределение узлов

Оптимальное распределение узлов

коэффициенты полинома P1(x)

e.gif (847 bytes)max

коэффициенты полинома P2(x)

e.gif (847 bytes)max

3

  C0 =

 

  C0 =

 

  C1 =

  C1 =

  C2 =

  C2 =

  C3 =

  C3 =

 

ПРИЛОЖЕНИЕ А

Таблица П.А – Варианты заданий на лабораторную работу

 

 

№ варианта

Функция 1

Интервал

Полином Pm(x)

Интервал

Функция 2

Интервал

1

[0, 2]

[0, 10]

2

[-2, 3]

[-8, 5]

3

[-4, 1]

[-2, 4]

4

[-1, 2]

[-5, 8]

5

[-3, 2]

[-5, 5]

6

[-1, 3]

[-1, 2]

7

[-4, 7]

[0, 8]

8

[-5, 8]

[-5, 3]

9

[-2, 5]

[-3, 4]

10

[-2, 3]

[-5, 7]